"""
前言
字典是内置的映射类型，由key-value键值对组成。注意：key和value之间用冒号隔开
"""

# 1. 创建字典
# dict1={} #空字典
# dict2={'id':101,'name':'张三',"address":"zhangsan"}
# dict3=dict(id=101,name="张三",address="zhangsan") # dict函数创建。注意key不需要双引号，并且k-v之间用=隔开
# dict4=dict([('id', 101), ('name','张三'), ('address', 'zhangsan')])
# print(dict1)
# print(dict2)
# print(dict3)
# print(dict4)

# 2. 检索字典。格式key in 字典对象，也可以使用 "字典对象[key]"检索，这个返回的是key所对应的value
# dict3=dict(id=101,name="张三",address="zhangsan") # dict函数创建。注意key不需要双引号，并且k-v之间用=隔开
# print('id' in dict3)

# 3. 使用key索引映射值
# dict3=dict(id=101,name="张三",address="zhangsan")
# print(dict3['id'])

# 4. 添加与修改字典。字典的大小是动态的，用户可以随时添加键值对，或者修改键值对。
# 其形式为 "字典对象[key]=value"。如果字典对象中存在key-value，则是修改，否则是添加
# dict3=dict(id=101,name="张三",address="zhangsan")
# dict3['address']='Guangzhou' # 修改
# dict3['pcode']='524039' # 添加
# print(dict3)

# 5. 浅拷贝
# dict3=dict(id=101,name="张三",address="zhangsan")
# dict5=dict(id=1008611,email='zjkju@163.com',telephone=123456)
# dict1=dict3.copy() # 浅拷贝
# dict3.update(dict5) # 用dict5更新dict3，具有相同的key，则更新value，如果没有，就添加到dict3中
# print(dict3)

# 6. get方法
# 创建字典
# my_dict = {'name': 'Alice', 'age': 25}
# # 使用get获取值
# name_value = my_dict.get('name')  # 返回 'Alice'
# age_value = my_dict.get('gender', 'None')  # 返回 '未知'，因为'gender'键不存在
# print(name_value)
# print(age_value)

# 7. 弹出指定的键值对应的值。注意：键值也会被删除
# my_dict = {'name': 'Alice', 'age': 25}
# my_dict.pop('name')
# print(my_dict)

# 8. Popitem()。作用：删除并返回字典中最后一个键值对。如果字典为空，则出错。
# my_dict = {'name': 'Alice', 'age': 25}
# print(my_dict.popitem()) # 输出('age', 25)

# 9. key()。作用：返回字典中所有的键
# my_dict = {'name': 'Alice', 'age': 25}
# print(my_dict.keys())

# 10.values()。作用：返回字典中所有的键值
# my_dict = {'name': 'Alice', 'age': 25}
# print(my_dict.values())

# 11. items()。返回键值对
# my_dict = {'name': 'Alice', 'age': 25}
# print(my_dict.items())

# 12. 遍历
# my_dict = {'name': 'Alice', 'age': 25}
# for k, v in my_dict.items():
#     print(k, ':', v)

# 13. 删除键为xx的元素
# my_dict = {'name': 'Alice', 'age': 25}
# del my_dict['age'] # 删除键为age的元素
# print(my_dict)